package gui.JPanels;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JPanel;

import textures.viewer.JPanelViewImage;
import aplicacion.Controlador;
import aplicacion.Vista;

public class JPanelGaleriaFotos extends JPanel {
	private static final long serialVersionUID = 1L;
	protected int actual;
	protected ArrayList<File> filesList;
	protected int circulo;
	protected int elemento;
	protected Controlador controlador;
	protected Vista vista;
	protected String directorio;
	protected JPanelViewImage panelFotos;
	
	public JPanelGaleriaFotos(Vista v, int cir, int elem, String path, JPanelViewImage panel){
		vista = v;
		controlador = vista.getControl();
		circulo = cir;
		elemento = elem;
		directorio = path;
		this.panelFotos = panel;
		this.initComponents();
		this.loadDefault();
	}
	
	public JPanelGaleriaFotos(){
		
	}


	protected void loadDefault() {
		actual = 0;
		//ArrayList<File> folderList = new ArrayList<File>();
		filesList=new ArrayList<File>();
		File currentFolder = new File(directorio);
		// filtramos para que solo coja directorios y no archivos
		for(File file:currentFolder.listFiles()){
			if(file.isDirectory()){
				File foto = new File(file.getAbsolutePath()+"/"+file.getName()+".mini");
				if(foto.exists()){
					filesList.add(foto);
				}				
			}
		}
		panelFotos.createImage(filesList.get(actual).getPath());
	}

	protected void loadFile(File file) {
		panelFotos.createImage(file.getPath());
		panelFotos.repaint();
	}
	
	protected void initComponents() {

		JButton button_anterior = new JButton("<< Anterior");
		button_anterior.addActionListener(new Bt_anterior_Listener());
		this.add(button_anterior, BorderLayout.EAST);
		
		JButton button_elegir = new JButton("-->Elegir<--");
		button_elegir.addActionListener(new Bt_elegir_Listener());
		this.add(button_elegir, BorderLayout.EAST);
		
		JButton button_siguiente = new JButton("Siguiente >>");
		button_siguiente.addActionListener(new Bt_siguiente_Listener());
		this.add(button_siguiente, BorderLayout.WEST);

	}
	
	protected void cargaElegido(){
		String nombreOriginal = filesList.get(actual).getName();
		String nombreDatos = nombreOriginal.substring(0, nombreOriginal.indexOf("."));
		System.out.println("Ha elegido --> "+nombreDatos);
		//panelFotos.createImage(filesList.get(actual).getPath());
		controlador.rellenaFileDataFlower(circulo, elemento, nombreDatos);
		vista.openEmptyPanel();
//		if(mainCanvas!=null){
//			mainCanvas.repaint();
//		}
	}
	
	protected void cargaElegidoTo2(){
		String nombreOriginal = filesList.get(actual).getName();
		String nombreDatos = nombreOriginal.substring(0, nombreOriginal.indexOf("."));
		System.out.println("Ha elegido para todos --> "+nombreDatos);
		//panelFotos.createImage(filesList.get(actual).getPath());
		controlador.rellenaFilenames(circulo, nombreDatos);
		vista.openEmptyPanel();
//		if(mainCanvas!=null){
//			mainCanvas.repaint();
//		}
	}

	protected class Bt_anterior_Listener implements ActionListener {
		public void actionPerformed(ActionEvent e) {			
			if (actual >= 0) {
				if(actual==0){
					actual = filesList.size() - 1;
				}
				else{
					actual--;
				}
				File currentFile = filesList.get(actual);
				loadFile(currentFile);
			}
		}
	}

	protected class Bt_siguiente_Listener implements ActionListener {
		public void actionPerformed(ActionEvent e) {			
			if (actual <= filesList.size() - 1) {
				if(actual==filesList.size() - 1)
					actual = 0;
				else {
					actual++;
				}
				File currentFile = filesList.get(actual);
				loadFile(currentFile);
			}
		}
	}
		
	protected class Bt_elegir_Listener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			Vista.setCargar(false);
			if(elemento == Integer.MAX_VALUE)
				cargaElegidoTo2();
			else
				cargaElegido();
		}
	}
}
